package com.xiaoshi.system.controller;


import com.xiaoshi.system.dto.SysDictDataDto;
import com.xiaoshi.system.qo.SysDictDataQo;
import com.xiaoshi.system.service.ISysDictDataService;
import com.xiaoshi.utils.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;

import javax.validation.Valid;

/**
 * <p>
 * 字典数据表 前端控制器
 * </p>
 *
 * @author yuankai
 * @since 2022-03-24
 */
@Api(tags = "字典数据管理器")
@RestController
@RequestMapping("/system/sys-dict-data")
public class SysDictDataController {

    @Autowired
    private ISysDictDataService sysDictDataService;

    @ApiOperation("获取字典项列表分页信息")
    @GetMapping("/getPage")
    public JsonResult getPage(SysDictDataQo qo) {
        return JsonResult.success(sysDictDataService.getPage(qo));
    }

    @ApiOperation("添加字典项")
    @PostMapping("/add")
    public JsonResult addSysDictData(@Valid @RequestBody SysDictDataDto dto, BindingResult bindingResult) {
        if(bindingResult.hasErrors()){
            return JsonResult.fail(bindingResult.getFieldError().getDefaultMessage());
        }
        if(sysDictDataService.addSysDictData(dto)){
            return JsonResult.success();
        }
        return JsonResult.fail();
    }

    @ApiOperation("编辑字典项")
    @PostMapping("/edit")
    public JsonResult editSysDictData(@RequestBody SysDictDataDto dto) {

        if(sysDictDataService.editSysDictData(dto)){
            return JsonResult.success();
        }
        return JsonResult.fail();
    }

    @GetMapping("/getByName")
    public JsonResult getByName(String name){
        return JsonResult.success(sysDictDataService.getByName(name));
    }

    @ApiOperation("根据ID删除字典项")
    @GetMapping("/delById")
    public JsonResult delById(Integer id){
        if(sysDictDataService.delById(id)){
            return JsonResult.success();
        }
        return JsonResult.fail();
    }

    @ApiOperation("根据type获取字典项")
    @GetMapping("/getByType")
    public JsonResult getByType(String type){
        return JsonResult.success(sysDictDataService.getByType(type));
    }


    @ApiOperation("根据type获取字典数组")
    @GetMapping("getDictDataByType")
    public JsonResult getDictDataByType(@RequestParam String type){
        return JsonResult.success(sysDictDataService.getDictDataByType(type));
    }

}
